package jheej5024;

public class J15_OOP1 {

	//객체지향 개발 기법
	//OOP:객체를 기반으로 프로그램을 작성하는 것
	//OOP 언어로 응용 프로그램을 개발하는 경우,
	//문제 해결을 위해 실제 상황과 유사한 모델을 만들어야 함
	
	//예를 들어,직원 세금을 계산하는 프로그램 작성
	//프로그램에서 회사를 표현하는 회사객체가 필요
	//또한, 직원을 나타내는 직원객체, 세금을 나타내는 세금객체도 필요
	
	//회사, 직원, 세금 객채를 자바 프로그램에서 
	//코드로 나타내는 방법에 대해 알아봄
	
	//모든 객체에는 2가지 성질이 있음
	//[속성property], 객체가 할 수 있는 [행동action]
	//현실세계에 존재하는 객체를 자바언어로 
	//가져오는 경우에도 속성과 행위는 있어야 함
	//자바에서 속정은 field, 행위는 method라 함
	//단, 필드와 메서드는 선택사항(생략가능)임
	
	//자바 객체를 만드는 방법은? - 설계도를 이용
	//차 라는객체를잘 만들려면
	//좋은 차로 만들어 주는 [설계도]를 참고
	//OOP에서 객체를 만들어주는 설계도를 [클래스]라 함
	
	//클래스는 동일한 유형의 객체를 만드는
	//청사진/설계도 또는 템플릿임 (중요!)
	//붕어빵 - 객체
	//붕어빵 틀 - 클래스
	//밀가루, 팥 - 속성
    //클래스는 당신이 만들려는 객체의 종류를 결정함
	
	//요약하자면, 클래스는 프로그래머로 하여금
	//문제의 추상화를 만들 수 있게 해주는 OOP 도구임
	//OOP에서 추상화abstraction는 실제 객체를 표현하기
	//위해 실제 객체에서 핵심적인 개념 또는 기능을 뽑아
	//프로그래밍 객체로 만드는 행위를 말함
	
	//클래스는 자바 프로그램의 기본 뼈대
	//자바 초보자는 클래스를 작성할 때
	//클래스이름,필드,메서드 등을 고려할 것
	
	//클래스 만들기
	//class 클래스이름 {
	//      클래스몸체 (필드, 메서드)
	//}
	
	
	//클래스이름은 반드시 대문자로 시작
	//클래스 정의시 클래스 이름과 파일이름 동일해야 함
	//클래스 내에 선언되 변수를 필드field라 함
	
	public static void main(String[] args) {
      // 클래스를 사용하지 않고 학생 객체
	  String name1 = "김태희";
	  int stdno1 = 123456789;
	  String addr1 = "부산 남구 문현동";
	  int mp1 = 1234567890;
	  
	  String name2 = "송혜교";
	  int stdno2 = 234567890;
	  String addr2 = "부산 진구 전포동";
	  int mp2 = 345678901;
		
	  
      //클래스를 이용해서 학생 객체 생성
	 Student taehee = new Student();
	 taehee.name="태희";
	 taehee.stdno=123456789;
	 taehee.addr="부산 남구 문현동";
	 taehee.mp=1234567890;
	  
	 Student suji = new Student();
	 suji.name="수지";
	 suji.stdno=123456789;
	 suji.addr="서울 광진구 자양동";
	 suji.mp=1234567890;
	  
	  
	  
   }  //main

 }   //class


  // 학생 클래스 정의

   class Student {
	   //필드 선언
	   String name;
	   int stdno;
	   String addr;
	   int mp;
   }

 // 고객 (Customer)클래스
 // 아이디, 비밀번호, 이름, 주소, 전화번호 , 이메일 
   
   
    class Customer {
    	String userid;
    	String passwd;
    	String name;
    	String addr;
    	String mp;
    	String email;
    }
   
 //상품(Product)클래스
 //상품명, 가격, 종류, 제조사, 상품번호

    class Product {
    	String proname;
    	int price;
    	String protype;
    	String promaking;
    	int pronumber;
    }

 //스타크래프트 2의 테란 유닛(TerranUnit)을 
 //클래스로 정의   
 //생명력, 에너지, 방어력
 //광물, 베스핀, 보급품, 생산시간

    class TerranUnit {
    	int life;
    	int energy;
    	int shield;
    	int mineral;
    	int gas;
    	int supply;
    	int maketime;
       	
    	
    	
    }



